package com.sunnada.wfs.utils;

import org.springframework.beans.factory.annotation.Value;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolClient {
    private static JedisPool pool = null;

    @Value("${spring.redis.host}")
    private static String host;

    @Value("${spring.redis.port}")
    private static int port;

    @Value("${spring.redis.password}")
    private static String password;

    @Value("${spring.redis.timeout}")
    private static int timeout;

    @Value("${spring.redis.jedis.pool.max-totle}")
    private static int maxTotal;

    @Value("${spring.redis.jedis.pool.max-idle}")
    private static int maxIdle;

    @Value("${spring.redis.jedis.pool.max-wait}")
    private static int maxWaitMillis;

    static {
        if (pool==null){
            JedisPoolConfig config = new JedisPoolConfig();
//            可分配的事例
            config.setMaxTotal(maxTotal);
//            控制一个pool最多有多少个状态为空闲的实例
            config.setMaxIdle(maxIdle);
//            最大等待时间
            config.setMaxWaitMillis(maxWaitMillis);
//            在borrow(引入)一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
            config.setTestOnBorrow(true);
//            return 一个jedis实例给pool时，是否检查连接可用性（ping()）
            config.setTestOnReturn(true);
            pool = new JedisPool(config,host,port,timeout,password);
        }
    }

    public static Jedis getJedis(){
        return pool.getResource();
    }

    public static void returnResource(Jedis jedis) {
        if (jedis!=null){
            jedis.close();
        }
    }
}
